package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

public class StudentDao implements BaseStudentDao {
    //定义一个数组容器作为整个系统的数据仓库
    private static Student[] stus = new Student[5];//加入static关键字修饰,使其可以被所有对象共享使用

    static {
        System.out.println("----------------Loding----------------");
        Student stu1 = new Student("heima001", "张三", "23", "1999-11-11");
        Student stu2 = new Student("heima002", "李四", "24", "2000-11-11");
        stus[0] = stu1;
        stus[1] = stu2;
    }

    public boolean addStudent(Student stu) {
        //先假设数组中已经没有位置拿来存储了
        int index = -1;
        //遍历数组
        for (int i = 0; i < stus.length; i++) {
            //拿到数组中的每一个元素
            if (stus[i] == null) {
                //如果当前索引位置为null说明位置可用,就将当前位置记录给index
                index = i;
                break;
            }
        }
        //根据index值判断是否添加成功
        if (index == -1) {
            return false;
        } else {
            stus[index] = stu;
            return true;
        }
    }

    //库管类中查询所有学生方法
    public Student[] findAllStudent() {
        return stus;
    }

    public void deleteStudentById(String delId) {
        int index = getIndex(delId);
        stus[index] = null;
    }

    public int getIndex(String id) {
        //先假设要查找的学号在容器中不存在
        int index = -1;
        //遍历数组容器
        for (int i = 0; i < stus.length; i++) {
            //拿到每一个学生对象
            Student stu = stus[i];
            //判断当前学生对象的学号与查找的学号是否匹配
            if (stu != null && stu.getId().equals(id)) {
                //找到了就修改标记让index记录当前学生对象的索引
                index = i;
            }
        }
        return index;
    }

    public void updateStudent(String updateId, Student newStu) {
        //根据学号查找对应的学生对象在容器中的索引位置
        int index = getIndex(updateId);
        //拿新的学生对象覆盖掉该索引位置的老对象,从而实现修改效果
        stus[index] = newStu;
    }
}
